Systems and methods for processing requests for content of a content distribution network

ABSTRACT

Improved methods for retrieval of content from CDNs is provided that includes a rendezvous controller that receives information of an identification of content being requested and an estimated location of a content requesting device. Based on this information, the rendezvous system identifies a server within a CDN from which the requested content may be retrieved. The selected server may be based on a repeatable hash function such that the likelihood that the content being requested is cached at the selected server. Steering requests to a server of the CDN which may have the content cached may reduce the number of servers within the CDN with the same cached content, particularly for the highest requested content. The rendezvous system may then return a corresponding domain name associated with the selected server and that can be subsequently submitted to a DNS for resolution to the IP address of the identified server.

CROSS-REFERENCE TO RELATED APPLICATION

This application is a continuation-in-part and claims priority to U.S.patent application Ser. No. 16/709,726, filed Dec. 10, 2019, entitled“Systems and Methods for Processing Requests for Content of a ContentDistribution Network,” which claims the priority under 35 U.S.C. §119(e) from U.S. Patent Application No. 62/778,122, filed Dec. 11, 2018entitled “Systems and Methods for Processing Requests for Content of aContent Distribution Network,” the entire contents of which areincorporated herein by reference for all purposes.

TECHNICAL FIELD

Embodiments of the present disclosure generally relate to systems andmethods for implementing a content distribution network (CDN), and morespecifically, to directing computing devices requesting content toservers of a content distribution network from which to obtain thecontent.

BACKGROUND

The Internet and the World Wide Web (the “Web”) are ubiquitous andeasily accessible using numerous possible wired or wireless computingdevices. Content providers (publishers) now use the Internet (and,particularly, the Web) to provide all kinds of content to numerous usersthroughout the world through any number of platforms. In order tooffload the job of serving some or all of its content, many contentproviders now operate or subscribe to content delivery networks (CDNs).Provider content can be served to clients from the CDN (e.g., from oneor more content servers in the CDN) instead of from the contentprovider's server(s). In a caching CDN, content may also be locallycached for delivery by the CDN servers. Having content cached enhancesthe performance of the CDN because the content does not have to beretrieved from origin servers or other locations, which are lessefficient than edge servers in providing content.

Numerous forms of content may be served from the CDN. For example,television shows and movies may now be accessed from any number of Websites or through applications running on smart TVs, tablets, smartphones, etc., and the shows and movies may be served from the CDN. Printnewspapers have migrated to the Web and provide portals through whichclients operating some form of computing device (e.g., PC, smart phone,or tablet), with a browser may access numerous forms of content, such asshort video clips, articles, images, and audio tracks. Software updatesand patches, once provided on disc and mailed to recipients, are nowroutinely distributed to devices from a CDN through one or more networkconnections and devices.

In conventional CDN systems, a content management system (CMS) mayreceive a request for a particular piece of content from a user/clientdevice. For example, a user may select a movie, television show, orsoftware update from a list or interface provided by the CMS. Inresponse, the CMS may return multiple Uniform Resource Locators (URLs),one per available CDN for providing the content, in an ordered list thatthe client device may use to retrieve the desired content. The clientdevice, upon receiving the ordered list of multiple URLs for therequested content, may then select one URL from the ordered list, basedon one or more preferences or rules for CDNs maintained by the clientdevice, and provide a domain name associated with a selected URL to adomain name system (DNS) resolver that subsequently submits the requestto one or more DNS servers, including a name server of the DNS, thatresolves the domain name to a corresponding Internet Protocol (IP)address. The IP address is then returned to the client device whichinitiates a session with the server associated with the returned IPaddress to retrieve the requested content.

Such conventional CDN systems have various inefficiencies related to theselection of servers from which content is to be provided. For example,if a content provider uses multiple CDNs, the content provider (or morespecifically the CMS) is generally responsible for selecting from whichCDN the content is to be provided. However, because the content provideris generally privy to only limited information regarding the performanceand characteristics of the CDNs available to it, the content providermay select a non-optimal CDN to provide content. Similarly, theidentification of a server or other content-providing device by the DNSmay also be inefficient. For example, the DNS may return an IP addressassociated with a provided hostname from which content provided by thehostname server may be retrieved. The DNS, however, may not have anyinformation of the particular content being requested such thatredundancies in the number of hostname servers caching and providing thecontent may occur as multiple users request the same content aredirected to different hostname servers. Further, the DNS server may beconfigured to select from one of many available servers based on variousperformance criteria. In one example, the server may be selected basedon lowest return trip time, which is generally a function of geographicproximity between the server and the client device. However, inconventional systems, the name server may have only limited informationregarding the geographic location of the client device and/or thecontent that may be cached at the available servers. For example, theDNS may direct the client device to access a first server for thecontent that does not have the requested content cached while a secondavailable server has cached the requested content. Without knowledge ofthe cached content at each server or the correct geographic location ofthe client device, inefficiencies in providing content to requestingdevices may be introduced. Accordingly, to the extent the DNS resolverand client device may be more efficiently served by particular CDNs orparticular components within a CDN, such efficiencies are foregone.

It is with these observations in mind, among others, that aspects of thepresent disclosure were conceived.

SUMMARY

One implementation of the present disclosure may take the form of amethod for processing content requests. The method may includereceiving, at a network device, a request for content comprising each ofa content identifier associated with a content file and a locationidentifier associated with a geographic location of a content-receivingdevice, generating, by the network device and based on the contentidentifier, a server identifier corresponding to a content server of aplurality of content servers of a CDN in the geographic location, andtransmitting, to a requesting device, a domain name comprising a serveridentifier corresponding to the content server of the plurality ofcontent servers, an indication of the geographic location of thecontent-receiving device, and a shared domain identifier, wherein adomain name system (DNS) utilizes the domain name to obtain anidentification of the content server of the plurality of content serversfrom a database associated with the shared domain identifier.

Another implementation of the present disclosure may take the form of anetworking device comprising one or more processors and a non-transitorystorage device configured to store one or more programs. When the one ormore programs are executed the one or more processors may communicatewith a requesting device to receive a request for content comprisingeach of a content identifier associated with a content file and alocation identifier associated with a geographic location of acontent-receiving device, generate, based on the content identifier, aserver identifier corresponding to a content server of a plurality ofcontent servers of a CDN in the geographic location and transmit, to therequesting device, a domain name comprising a server identifiercorresponding to the content server of the plurality of content servers,an indication of the geographic location of the content-receivingdevice, and a shared domain identifier, wherein a domain name system(DNS) utilizes the domain name to obtain an identification of thecontent server of the plurality of content servers from a databaseassociated with the shared domain identifier.

While multiple embodiments are disclosed, still other embodiments of thepresent disclosure will become apparent to those skilled in the art fromthe following detailed description, which shows and describesillustrative embodiments of the disclosure. As will be realized, theinvention is capable of modifications in various aspects, all withoutdeparting from the spirit and scope of the present disclosure.Accordingly, the drawings and detailed description are to be regarded asillustrative in nature and not restrictive.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A is an example network environment for distributing content overa telecommunications network.

FIG. 1B is an example network environment of an authoritative domainname server (DNS) of a DNS architecture.

FIG. 2 is an example network environment including a rendezvous systemfor processing requests for content available through a contentdistribution network (CDN).

FIG. 3 is a second example network environment including a secondrendezvous system for processing requests for content available througha CDN.

FIG. 4 is a flow chart illustrating a method for processing requests forcontent available through a CDN.

FIG. 5 is a diagram illustrating an example of a computing system whichmay be used in implementing embodiments of the present disclosure.

DETAILED DESCRIPTION

Implementations of the present disclosure are directed to systems andmethods for improved retrieval of content from CDNs and, in particular,to content centric localization of retrieval of content from CDNs. Arendezvous controller or system may be provided that receivesinformation regarding an identification of content being requested andan estimated location of a device requesting the content. The requestinformation may be provided by the requesting device or may be providedfrom a third party system. The rendezvous system may utilize theprovided information to identify a server within a CDN from which therequested content may be retrieved. In one implementation, therendezvous system may use the content identifier and the estimatedlocation as inputs to a repeatable hash function, the output of whichmay provide an identification of the server in the CDN to provide thecontent. Further, because the hash function is repeatable, subsequentrequests for the same content form the same location may direct therequesting device to the same selected server. The server may cache therequested content upon the first request such that the content may beavailable to additional requests for the content. As requests aredirected to the same servers for the same content, the likelihood thatthe content being requested is cached at the selected server increases.Steering requests to a server that may have the content cached mayreduce the number of servers within the CDN with the same cachedcontent, which is particularly advantageous for the highest requestedcontent that might otherwise be overly redundantly cached in numerouslocations. The rendezvous system may then return a corresponding domainname associated with the selected server and that can be subsequentlysubmitted to a DNS for resolution to the IP address of the identifiedserver. The reduction in redundancy of cached content on the servers ofthe CDN may improve the efficiency and throughput of the CDN inproviding the hosted content.

In one example implementation, the rendezvous system is in communicationwith a content management system (CMS) accessible by a client device. Inresponse to receiving a request for content from the client device, theCMS transmits a request to the rendezvous system including an identifiercorresponding to the requested content and a location identifiercorresponding to an estimated location of the client device. In analternative arrangement, the client device may submit a request forcontent to the CMS which then provides a content identifier and/or alocation identifier to the client device. The client device may thensubmit the content and location identifiers to the rendezvous system toreceive an identification of the selected server from which a requestedcontent may be provided.

Although other implementations are possible, in one exampleimplementation, the CMS performs a lookup on customer data to retrievethe location identifier. In another example implementation, the CMS maydetermine a location identifier by performing a geolocation operation onan IP address or similar information corresponding to the client device.The IP address corresponding to the client device may be received in thecontent request as a source IP address. In still another implementation,the location identifier may be the IP address of the client device andthe rendezvous system may perform the geolocation operation. The CMS maydetermine, based on the content and/or location identifier, a CDN fromwhich the requested content may be retrieved by the client device. TheCMS may then provide the content and location identifier to therendezvous system associated with the selected CDN. In response toreceiving each of the content and location identifier, the rendezvoussystem identifies a server of the CDN from which the requested contentmay be retrieved. More specifically, the rendezvous system may execute ahashing function or other repeatable function to determine an availableserver based on the content and geographic identifiers. Further, becausethe hash function is repeatable, subsequent requests for the samecontent form the same location may direct the requesting device to thesame selected server of the CDN. The selected server may cache therequested content upon the first request such that the content may beavailable to additional requests for the content, that may be similarlysteered to the selected server. As requests are directed to the sameservers for the same content, the likelihood that the content beingrequested is cached at the selected server increases. In some instances,more than one server may be available to provide the requested contentfor the geographic area of the client device and the hashing functionmay identify one of the available servers to server the content.

The rendezvous system then returns a domain name to the client device(either directly or via the CMS) which may then submit the domain nameto a domain name system (DNS) for resolution. For example, the clientdevice may transmit the domain name to a DNS resolver that facilitatesresolution of the domain name into an IP address corresponding to theidentified server. Upon such resolution, the DNS resolver may return theIP address to the client device which, in turn, may initiate a sessionwith the server and commence retrieval of the content.

In certain implementations of the present disclosure, content may beassigned to servers of the CDN using a consistent hash. As describedbelow in further detail, such implementations enable the efficientdistribution of content across servers of the CDN while improving theefficiency with which the CDN handles the addition and removal ofservers from the CDN.

FIG. 1A is an example network environment 100 for distributing contentto one or more users. Although illustrated in FIG. 1 A as a contentdelivery network, it should be appreciated that aspects of the presentdisclosure may apply to any type of telecommunications network thatutilizes network addressing (such as Internet Protocol (IP) addresses,media access control (MAC) addresses, domain names, etc.) for connectingan end user to one or more components of the network. For example,aspects of the disclosure may be utilized to connect a user of thenetwork to a content server on which one or more content files isstored. Thus, although the CDN architecture is used throughout thedocument as the example network architecture through which aspects ofthe present disclosure may be applied; other network architectures andconfigurations are similarly contemplated.

In one implementation of the network environment 100, a CDN 102 iscommunicably coupled to one or more access networks 106. In general, theCDN 102 comprises one or more components configured to provide contentto a user upon a request and an underlying IP network through which therequest is received and the content is provided. The underlying IPnetwork associated with the CDN servers may be any type IP-basedcommunication network configured to transmit and receive communicationsthrough the network and may include any number and types oftelecommunications components. In this manner, CDN-based components maybe added to an existing IP-based communication network such that thecomponents receive a request for content, retrieve the content from astorage device, and provide the content to the requesting device throughthe supporting IP network. For simplicity, the use of the term “CDN”throughout this disclosure refers to the combination of the one or morecontent servers and the underlying IP network for processing andtransmitting communications, including one or more domain namearchitectures, unless otherwise noted.

In one embodiment, a client device 104 connects to the CDN 102 throughone or more access networks 106 to request and receive content orcontent files from the CDN 102. The access network 106 may be under thecontrol of or operated/maintained by one or more entities, such as, forexample, one or more Internet Service Providers (ISPs) that provideaccess to the CDN 102. Thus, for example, the access network 106 mayprovide Internet access to a client device 104. In addition, the accessnetwork 106 may include several connections to the IP network of the CDN102. For example, access network 106 includes access point 120 andaccess point 122. Also, the client device 104 may be connected to anynumber of access networks 106 such that access to the CDN 102 may occurthrough another access network. In general, access to a CDN 102 (orunderlying IP network associated with the CDN) may occur through anynumber of ingress ports to the CDN through any number of accessnetworks.

The CDN 102 is capable of providing content to a client device 104,which is generally any form of computing device, such as a personalcomputer, mobile device, tablet (e.g., iPad), or the like. Content mayinclude, without limitation, videos, multimedia, images, audio files,text, documents, software, and other electronic resources. The clientdevice 104 is configured to request, receive, process, and presentcontent. In one implementation, the client device 104 includes anInternet browser application with which a link (e.g., a hyperlink) to acontent item may be selected or otherwise entered, causing a request tobe sent to a directory server 110 in the CDN 102. In another example,client device 104 may be a gaming console or smart television throughwhich files, videos, images, and the like may be viewed.

The CDN 102 may include a directory or authoritative server 110 thatresponds to the request by providing a network address (e.g., an IPaddress) where the content associated with the selected link can beobtained. In one implementation, the directory server 110 provides adomain name system (DNS) service, which resolves an alphanumeric domainname to an IP address. The directory server 110 resolves the link name(e.g., URL or other identifier) to an associated network address fromwhich the client device 104 can retrieve the content. In some instances,the access network 106 may also include a DNS service. The directoryserver 110 may, in some instances, include several DNS servers arrangedin a DNS architecture or system of servers to resolve domain names intoIP addresses. For example, FIG. 1B is an example network environment 150of an authoritative domain name server (DNS) of a DNS architecture 154.The components of the network 150 are similar or the same as componentsdiscussed above with reference to the network 100 of FIG. 1A. Forexample, the network environment 150 includes a user computing device104, an access network 106 configured to provide access to a CDN for thecomputing device, and one or more DNS servers, discussed above.

As mentioned, the client device 104 may request content or a contentfile from the CDN 102. In one example, the client device 104 provides alink name (e.g., a hostname portion of the received URL or otheridentifier) associated with content provided by the CDN 102. Forexample, client device 104 may provide a link name to a DNS resolver 152associated with the access network 106. The DNS resolver 152 associatedwith the access network 106 is sometimes known as the ISP resolver. Inone example, the access network ISP resolver 152 has cached an IPaddress for the provided hostname at which the content available throughthat hostname may be obtained. In other words, the ISP resolver 152 mayreturn an IP address of a device (such as a content server or othercontent-providing device of the CDN 102) to the client device 104 towhich the computing device may follow to access the content of thehostname from the CDN.

However, while the ISP resolver 152 may be implemented to cacheresponses, the resolver often may not have a cached IP address for theprovided domain name. In such cases, the DNS resolver 152 transmits asecond DNS request to a DNS architecture 154 of the CDN 102 to receivean IP address at which the content file may be obtained. In general, theDNS architecture 154 provides a root node hierarchy of DNS resolversthat respond to DNS requests by either responding with the IP addressassociated with the provided domain name or directing the requestingdevice 152 through the architecture to the corresponding or proper DNSresolver within the architecture 154. Through the DNS architecture 154,the DNS request from the ISP resolver 152 is fulfilled (i.e., the IPaddress associated with the request is provided to the ISP resolver152). In turn, the ISP resolver 152 may cache the returned IP addressfor future requests received at the resolver and may provide the IPaddress to the client device 104 in response to the DNS request.

More particularly, when the ISP resolver 152 does not have a cached IPaddress for the requested content, the ISP resolver 152 transmits a DNSrequest to a root node 156 or root server of the DNS architecture 154.The root node 156 may, in some instances, analyze the request anddetermine a type of hostname included in the request. For example, theroot node 156 may determine if the hostname includes a “.com”, “.net”,“.org”, etc. as a part of the entered hostname. The DNS architecture 154may include a DNS resolver for each of the different types of hostname,such as a DNS resolver 158 for .org hostname requests, a DNS resolver160 for .net hostname requests, a DNS resolver 162 for .com hostnamerequests, and so on. Upon determining the type of hostname requested,the root node 156 may return to the ISP resolver 152 a redirect to acorresponding DNS resolver within the architecture 154.

The ISP resolver 152 may continue sending DNS requests to the DNSarchitecture 154, working down the hierarchy of the DNS architecture 154servers, until the DNS 164-170 corresponding to the received hostname islocated. In this manner, the ISP resolver 152 is directed to, forexample, DNS server B 166 within the architecture 154 for the particularhostname and, once the IP address corresponding to the hostname isobtained, the ISP resolver 152 may cache and/or provide the IP addressto the client device 104. With this information, the computing device104 accesses a device within the CDN 102 at the provided IP address andreceives the requested content from the CDN 102.

Returning to FIG. 1A, the CDN 102 may include one or more edge servers112, which may cache content from another server to make it available ina more geographically or logically proximate location to the clientdevice 104. The edge server 112 may reduce network loads, optimizeutilization of available capacity, lower delivery costs, and/or reducecontent download time. The edge server 112 is configured to providerequested content to a requestor, which may be the client device 104possibly via an intermediate device, for example, in the access network106. In one implementation, the edge server 112 provides the requestedcontent that is locally stored in cache. In another implementation, theedge server 112 retrieves the requested content from another source,such as a media access server (MAS) (e.g., a content distribution server114 or a content origin server 116 of a content provider network 118).The content is then served to the client device 104 in response to therequests. In particular, the client device 104 may utilize the URLreceived from the CMS to generate an HTTP request to the selected serveridentified by the received IP address from the DNS.

Client device 104 may also contact content management system (CMS) 124of the content provider network 118 to receive further instructions orcommands on accessing content from the CDN 102. For example, contentprovider network 118 may utilize more than one CDN for providing contentto requesting devices. The selection of the CDN to provide content tothe client device 104 may be based on any number and type of criteria,such as location of the client device 104, performance of the CDNs inthe client device's location, a pricing structure for the contentprovider to use a CDN, constraints for the CDN established through aservice provider agreement, client type, client device capabilities(e.g., display resolution), and the like. Regardless of the businesslogic executed by the CMS 124, the CMS 124 may select a CDN fromavailable CDNs to provide the requested content to the client device104. In some instances, the client device 104 provides one or moreidentifiers to the CMS 124 for determining the CDN for the content. Forexample, the client device 104 may provide a geographic locationindicator and an indicator of the requested content to the CMS 124. Inother examples, the CMS 124 may determine or estimate the client device104 location, such as by accessing an IP address associated with theaccess network 106 and estimating the client device 104 location from adatabase of IP addresses and estimated locations. The CMS 124 may alsoestimate the requested content by extracting or accessing a content fileindicator in a URL, hostname, or other portion of the request for thecontent. Regardless of the business logic executed by the CMS 124 toselect a CDN 102 for the client device 104, the CMS 124 may transmit aninstruction or identification of the selected CDN 102 to the accessnetwork 106 or client device 104. The client device 104 or accessnetwork 106 may then redirect the request for content to the selected oridentified CDN to request the content from the selected CDN. Additionaloperations of the CMS 124 are discussed in more detail below.

Once the CDN 102 is selected by the CMS 124, the client device 104accesses the CDN to resolve the hostname or URL with the selected CDN102 as described above. However, many DNS architectures 154 of CDNs 102may have only limited information regarding the geographic location ofthe client device and/or the content that may be cached at the availablecontent servers 112 of the CDN 102 such that the efficiency of the CDN102 to cache content and direct requesting devices to the devices inwhich the content is cached is limited. For example, the DNS 154 maydirect the client device 104 to access a first server 112 for thecontent that does not have the requested content cached while a secondavailable server 110 has cached the requested content. Alternatively,popular content may be cached at multiple servers of the CDN 102,consuming memory space within those servers that may be used for othercontent.

FIG. 2 is a block diagram of a network environment 200 for distributingcontent that utilizes a rendezvous system 202 for directing clientdevices 104 to connect to determined servers within the CDN 102 toprovide content to the requesting device. Several components of thenetwork environment 100 may be the same or similar to the componentsdiscussed above with reference to FIGS. 1A and 1B. For example, theenvironment 200 includes a client device 104, which may be any suitablecomputing device configurable to request and receive content from one ormore content delivery networks (CDNs). For example and withoutlimitation, the client device 104 may be one of a laptop computer, adesktop computer, a tablet, a smartphone, a video game console, or anyother similar computing device. The environment 200 may also include aCMS 124 of a content provider network 118 for communicating with theclient device 104 to select a CDN from multiple available CDNs forproviding content to the client device 104, redirect the client deviceto contact the selected CDN 102 to transmit a DNS request, provide somecontent directly to the client device 104 (such as portals for accessingsupported software or programs), and the like. A DNS resolver 152 andDNS architecture 154 is also included in the network environment 200 andoperate as described above. CDN-A 102 is illustrated as the CDN selectedby the CMS 124 for providing content to the client device 104 frommultiple available CDNs.

In general, the CMS 124 may contact or otherwise communicate with therendezvous system 202 to receive information on a particular contentserver or other content providing device of CDN-A 102 from which contentmay be provided to the client device 104. The communication with therendezvous system 202 may occur in response to receiving a contentrequest from the client device 104. For example and as illustrated inFIG. 2, the client device 104 may transmit a content request to the CMS124 based on interactions of the client device 104 with the contentprovider network 118. In some instances, a user of the client device 104may access a portal or program of the client device 104 that directs acontent request to the CMS 124. The content request may include variousinformation related to the client device 104 and/or the requestedcontent. For example, the content request may include an IP addressassociated with the client device 104 or the access network 106 throughwhich the client device 104 is communicating with the CMS 124. Inanother example, the content request may include a geographic locationidentifier of the client device 104. Further, the content request mayinclude some identifier associated with the requested content, such as afile name, a path name, a number identifier, and the like. In general,any identifier utilized by the content provider network 118 foridentifying or storing the content may be used and transmitted by theclient device 104 in the content request.

The CMS 124, upon receiving the content request, may determine a CDN 102from which the content is available to the client device 104. In oneexample, the CMS 124 may execute logic or other operations to determinethe CDN 102. Such logic may consider the client device 104 locationindicator and/or the content request indicator, as well as otherbusiness considerations discussed above. In some instances, the CMS 124may select a CDN 102 that includes a corresponding rendezvous system202. The rendezvous system 202 may aid the client device 104 isaccessing a content server or other content-providing device of theselected CDN 102 to receive the requested content. In the exampleillustrated in FIG. 2, the CMS 124 may select, based on one or morebusiness logic rules, to direct the client device 104 to CDN-A 102 froma plurality of available CDNs to provide the content. Rendezvous system202 may be associated with CDN-A 102 and the CMS 124 may consult therendezvous system 202 for directing the client device 104 to access aparticular server (such as server A 204) of a plurality of availableservers 204-208 of the CDN-A 102 to provide the requested content to theclient device 104.

More particularly, CMS 124 may transmit a server request to therendezvous system 202 associated with the selected CDN 102. The serverrequest sent to the rendezvous system 202 may include informationassociated with the content request received at the CMS 124, such as anidentification of the requested content (such as a content file name orother identifier) and/or an estimated geographic location of the clientdevice 104. As described above, the location identifier may generally beany value corresponding to a geographic location or area. In certainimplementations, the geographic location or area may generallycorrespond to a geographic location or area associated with the clientdevice 104 and/or a user of the client device. Such information mayinclude, without limitation, one or more of an address, a zip code, acounty, a city, an airport code, one or more coordinates (e.g.,longitude and latitude coordinates), or any other information that maydescribe a geographic location or region. In one example implementation,the location identifier may be an IP address or similar network addressof the client device 104. In such implementations, the location of theclient device 104 may be obtained using a geolocation algorithm orlookup that converts the IP address to a physical location suitable foridentifying a geographically proximal (or similarly favored) CDN.

Although described primarily as corresponding to a location of theclient device 104, it should be appreciated that the location identifiermay correspond to any location. For example, instead of corresponding toa location of the client device 104, the location identifier may insteadcorrespond to a proxy computing device, a location chosen by the CMS124, or any other suitable location.

In response to receiving the request from the CMS 124, the rendezvoussystem 202 may determine one or more servers 204-208 of the CDN 102 fromwhich the content may be accessed or provided to the client device 104.In certain implementations, identifying the servers may includedetermining which servers 202-208 of the CDN-A in the geographiclocation of the client device 104 may provide the requested content,either from cache or from the content provider network. For example, therendezvous system 106 may access location data from a location database210 that correlates location information in the form received from theCMS 124 to the CDN-A 102. The rendezvous system 202 may then perform alookup in the location data 210 using the location information todetermine geographically suitable servers 204-208 from which the contentrequested by the client device 104 may be retrieved. For purposes of thecurrent example, it is assumed that the foregoing process results in theidentification of servers 204-208 of CDN-A 102 as the mostgeographically suitable.

In addition, the rendezvous system 202 may further generate a serveridentifier for a specific server 204 within the identified CDN 102 areafor providing the content. In the current example, CDN-A 102 includesmultiple servers identified as SERVER-A to SERVER-C 204-208. However,any number of servers may be available for providing the content to theclient device 104 from CDN-A 102. In certain implementations, therendezvous system 202 may have access to CDN content data 212 for thecontent available via CDN-A 102 associated with the rendezvous system202. The CDN content data 212 may include, for each piece of content,information for identifying those servers 204-208 in the area of theclient device 104 from which the content may be requested or provided.In addition, the rendezvous system 202 may select, from the group ofavailable servers 204-208, a particular server 204 to provide thecontent to the client device 104. For example, the CDN content data 212may include a list of content identifiers and, for each contentidentifier, a corresponding server index (or information from which theserver index may be obtained) indicating from which server 204 of a CDN102 the content may be retrieved. A specific example of how theparticular server 204 is determined via a consistent hash function isdiscussed below in further detail. Regardless of the method used toidentify a server 204 of CDN-A 102, for purposes of the current example,it is assumed that the rendezvous system 202 determines that Server A204 is the preferred server from which the content is to be retrievedand, as a result, obtains a corresponding server identifier for Server A204.

After identifying a server, the rendezvous system 202 may return adomain name to the CMS 104 corresponding to the identified server. TheCMS 124 may then return the domain name to the client device 104. In onespecific example, the domain name may be of the form“<server>.<location>.<domain>”, where <server> is a server identifiercorresponding to the identified server (e.g., “serverA”), <location> isan identifier of the geographic location associated with the clientdevice 104 and the CDN portion containing the server (e.g. “Denver”),and <domain> is a domain (e.g., “foo.com”) associated with the DNSarchitecture 154 for resolving domain names generated by the rendezvoussystem 202. So, for example, a domain name of “serverA.Denver.foo.com”may be returned to the client device 104 from the CMS 124 as receivedfrom the rendezvous system 202 if the content is to be retrieved fromServer A 204 of CDN-A 102. More particularly, the domain name providedto the CMS 104 may be a hostname that is understood by the CDN andassociated with the content provider so proper delivery rules andbilling may be applied in providing the content. The domain name mayalso used for HTTPS requests. The domain portion of the provided domainname discussed above may also include an identification of the contentprovider. For example, the domain name may also include a customeridentifier of some type such that the system may apply the properrouting rules are to be applied and determine billing purposes. Thus,the domain name may be of the form “<server>.<location>.<customerID>.<domain>”, where <server>, <location>, <domain> are as describedabove with the <customer ID> identifying the provider of the content.Further, the returned domain name may cause the system to obtain acertificate for the ≤customer ID>.<domain> portion of the domain name.However, as the system may own or operate the domain (footprint.net),obtaining the certificate may occur automatically.

When the domain name is provided to the CDN 102 to request the content,the CDN may strip off the <server> and <location> portions of the domainname to identify the content provider domain. However, this approach mayviolate traditional HTTPS protocols as the client device 104 includesthe domain name in the client hello message so that the receiving servermay select and present the proper certificate to the client device 104.In this case, the client device 104 assumes the domain is the entiredomain name “<server>.<location>.<domain>”, but a certificate for thatdomain does not exist within the CDN. A solution to this issue isprovided by directing the client device 104 to a shared domain, such asxyz.net, which may be associated with a wildcard certificate. A wildcardcertificate can only match one domain deep, so foo.xyz.net would match awildcard certificate *.xyz.net, but foo.bar.xyz.net would not. In suchcircumstances, the prefix may be encoded in such a way to contain asingle domain component yet convey the relevant information. Forexample, the domain name may include <server> and <location> portions ora base64 encode of <server> and <location> portions, and the like.

After receiving the domain name from the CMS 124, the client device 104may provide the domain name to a DNS resolver 152 in a DNS request, asdescribed above. The domain name provided to the DNS resolver 152 mayinclude the <domain> portion of the domain name after stripping off the<server> and <location> portions. In some instances, the DNS resolver152 may forward the DNS request to the DNS architecture 154 to obtain acorresponding IP address for server A 204. To resolve the DNS request,the DNS architecture 154 may communicate or access a rendezvous lookuptable 214 including entries that correspond location, server identifier,and a particular IP address of a server of the CDN-A 102. Theinformation included in the rendezvous lookup table 214 may be providedto the DNS architecture 154 by the rendezvous system 202 to correspondserver identifiers with IP addresses of servers of the CDN 102. In thismanner, the rendezvous system 202 may control which servers 204-208 ofthe CDN 102 are associated with the particular server identifiersprovided by the rendezvous system 202 in response to a query from theCMS 124. The particular IP address for the server identified by theserver identifier is then provided to the client device 104. In someinstances, the DNS architecture 154 may provide a plurality of IPaddresses of multiple servers of the CDN 102 with some indication of apreference for one server over another. For example, the DNSarchitecture 154 may provide a first IP address for server A 204, asecond IP address for server B 206, a weighted value of x associatedwith the first IP address, and a weighted value of y associated with thesecond IP address, with x being a larger weighted value than y. Thesecond IP address may indicate a backup server for requesting content ifthe first server associated with the first IP address cannot provide thecontent. The weighted values may provide further instructions to theclient device 104 for accessing servers 204-208 of the CDN 102.

The client device 104 may then initiate a session (e.g., a hypertextterminal protocol (http) or similar session) with server A 204 toretrieve the requested content. In cases where the content is cached orotherwise stored at server A 204, server A may begin transmitting thecontent to the client device 104. If, on the other hand, server A 204does not currently store the requested content, server A may retrieveand cache the content consistent with the particular contentdistribution and caching techniques implemented in the CDN 102 asdescribed above.

Through the network environment 200 of FIG. 2, the client device 104 maybe pushed to request content from a particular server 204 of the CDN102. As content from the CDN 102 is cached at the servers 204-208 uponone or more requests for the content, directing client devices 104 toparticular servers may improve the caching function of the CDN. Moreparticularly, client devices 104 requesting the same content may bedirected to the same servers such that the content may be cached at afew select servers, freeing up caching space on other servers of the CDN102 to cache other content. A repeatable process for directing clientdevices 104 requesting the same content to the same server or serversmay therefore improve the efficiency of the CDN 102 to provide saidcontent to the client devices 104.

FIG. 3 is a second example network environment 300 including a secondrendezvous system 302 for processing requests for content availablethrough a CDN 102. Similar to the network environment 200 of FIG. 2, thenetwork environment 300 of FIG. 3 includes a client device 140 incommunication with a CMS 124. The CMS 124 is configured to presentand/or manage requests for content received from the client device 140.In this implementation, the CMS 124 again determines which CDN ofmultiple CDNs for which the requested content may be provided to theclient device 140. For example, CMS 124 may select CDN-A 102 from aplurality of available CDNs to provide the content. In response to therequest for content received at the CMS 124, the CMS may return to theclient device 104 a redirect instruction to access the rendezvous system302 of the environment 300. In other words, rather than the CMS 124accessing the rendezvous system 302 to obtain the server identifier ofthe CDN 102 as above, the client device 104 may be redirected, based oninformation provided by the CMS 124, to the rendezvous system 302. Inone instance, the redirect instructions may include a contentidentifier, a CDN identifier of the selected CDN, an IP address or othernetwork address of the rendezvous system 302, a geographic locationidentifier of an estimated location of the client device 104, and/orother information for redirecting the client device 104.

In response to receiving the redirect instruction from the CMS 124, theclient device 104 may transmit a server identification request to therendezvous system 302 to identify the particular server within the CDN102 from which the requested content may be accessed. In one example,the server identification request, similar to above, may include anidentifier of the requested content and a geographic location indicatorof the client device 104. The rendezvous system 302 then generates andreturns a domain name to the client device 104. As previously discussed,the domain name may include, among other things, identifierscorresponding to a specific server 204 of a specific CDN 102 from whichthe requested content may be retrieved and may be generated by therendezvous system 302 based on one or more of location data 210 and/orCDN data 212, as previously discussed above. In addition, the rendezvoussystem 302 may execute a hashing function or other similar algorithm toselect the server 204 of the CDN 102 for providing the requestedcontent.

The client device 104 may then submit the received domain name to a DNSresolver 152 and/or the DNS architecture 154 to resolve the domain nameto an IP address of the server 204 from which the content may beretrieved, as described. The client device 104 may then connect to theserver 204 and request the content.

In still another instance, one or more of the functions of therendezvous system 202, 302 may be performed by the CMS 124. For example,the rendezvous system 302 may provide the hashing function executed todetermine the particular server 204 of the available servers 204-208 ofthe CDN 102. The CMS 124 may then execute the hashing function to obtainthe server identifier for the selected server and provide the serveridentifier accordingly. In addition, the CMS 124 may be given access tolocation database 210 and/or CDN database 212 to determine the availableservers of the CDN 102 for providing the content to the client device104, based on the content identifier and/or the geographic locationidentifier of the client device 104 received at the CMS 124.

FIG. 4 is a flow chart illustrating a method 400 for processing requestsfor content available through a CDN 102. In one instance, the operationsof the method 400 may be executed by the rendezvous system 202, 302 ofthe network environment 200, 300 described above. In other instances,other systems or devices of the environments discussed above may executeone or more of the operations. For example, CMS 124, DNS architecture154, and/or the client device 104 may the operations. The operations mayalso be executed through a software program, one or more hardwarecomponents, or a combination of software programs and hardwarecomponents.

Beginning in operation 402, the rendezvous system 202 may obtain CDNarchitecture data from the CDN database 212. In particular, therendezvous system 202 may determine one or more servers available in aparticular location serviced by the CDN-A 102. For example, therendezvous system 202 may determine that servers A-C 204-208 of CDN-A102 may be available to provide content to requesting devices within aparticular geographic location, such as a metro area. Other locations ormetro areas may be serviced by the CDN-A 102 and may include more orfewer content servers 204-208. For example, a large metro area mayinclude 20 servers to provide content to requesting devices within themetro, while a smaller metro area may include fewer than 5 servers toprovide content servers for devices within the small metro. In general,more servers may be available to provide content in geographic areaswith more potential requesting devices or users.

In operation 404, the rendezvous system 202 may generate a serveridentification and location table from the CDN architecture dataassociated with a particular location or metro area of the CDN 102.Using the example illustrated in FIG. 2, the CDN-A 102 may include threeservers (namely server A-C 204-208) for providing content to requestingdevices in a particular geographic area. The geographic location and thethree servers 204-208 available to provide content may be obtained fromthe CDN database 212 by the rendezvous system 202 and a tableassociating the three servers 204-208 and the geographic location may begenerated. In a similar manner, other geographic locations and theidentification of a number of servers of the location may also beincluded in the table by the rendezvous system 202. In one particularexample, the servers 204-208 available in a particular location may benoted in the table by a server ID value that acts as a placeholder valuefor the server in relation to the number of servers available in thelocation. For example, servers 204-208 of the CDN 102 may be included inthe table with server IDs as discussed above, such as“serverA.Denver.foo.com”. An additional entry may also be included inthe server ID/location table or may be included in a separate table. Theadditional entry may associate the generated server IDs of the tablewith a network address or other network identifier, such as an IPaddress associated with each of the noted server IDs. In some instances,the IP address for one or more servers of the table may be updated inthe table as available servers of the CDN 102 are brought online orremoved. For example, an IP address of a redundant server may beincluded in the table upon a failure of a server of the CDN 102 toredirect traffic from the failed server to the redundant server.

In operation 406, the rendezvous system 202 may provide, to the DNSarchitecture 154, access to the generated server ID/location table or tothe information included in the table. In one instance, the rendezvoussystem 202 may maintain the rendezvous table in a database 214 andnotify the DNS architecture 154 of the presence of the table in thedatabase 214. In another example, the rendezvous system 202 may providethe table to the DNS architecture 154, which may store the table in therendezvous table database 214. Updates to the table may occur in asimilar manner in which the rendezvous system 202 may provide theupdates to the DNS architecture 154 that may update the rendezvous tabledatabase 214 accordingly. Regardless of the database used, the DNSarchitecture 154 may be provided access to the information contained inthe rendezvous table 214 such that the DNS architecture 154 may respondwith an IP address of a server 204 of the CDN 102 based on a DNS requestprovided by a requesting device 104. The DNS request may include aserver ID as noted above from which the DNS architecture 154 may accessa corresponding IP address for the target server of the CDN 102.

In operation 408, the rendezvous system 202 may receive, from arequesting device such as the CMS 124 or client device 104, a requestfor content that includes an identifier of the requested content and anidentifier of a location of the client device 104. As described above,the CMS 124 may provide the content request based on informationprovided to the CMS 124 from the client device 104. Alternatively, theclient device 104 may be redirected to provide the rendezvous system 202with the content request. The content identifier may be any alphanumericor other value associated with the requested content and the locationidentifier may be an estimated location of a destination device forreceiving the content. In operation 410, the rendezvous system 202 mayexecute a hashing function using the content identifier and/or thelocation identifier to generate a server ID from which the content maybe provided to the client device 104. For example, the rendezvous system202 may utilize the CDN data 212 to determine the number of serversavailable for the particular location identified in the locationidentifier. The number of servers for the particular location may be afirst input to the hashing function. The hashing function may also usethe content identifier to generate a server ID from the number ofavailable servers for the location of the client device 104.

In one specific example, the rendezvous system 202 may use a distributedconsistent hashing scheme. Consistent hashing is based on mapping eachobject (here, either servers of the CDN 102 or content available throughthe CDN) to a location on the edge of a circle or ring, where eachlocation on the ring corresponds to a value in a hash key space definedby the range of outcomes of a hashing function. For example, in certainimplementations, an n-bit hashing function may generate a hash rangingfrom 0 to 2{circumflex over ( )}n-1 and, as a result, the correspondinghash key space may include 2{circumflex over ( )}n locations. Thelocation of a given object within the hash key space may then bedetermined by hashing a value associated with the object, the result ofwhich provides the hash key space location. So, for example, a key for agiven piece of content may be the content itself or other dataassociated with the content. Similarly, a key for a server of the CDNmay be an identifier associated with the server or some other dataassociated with the server, such as the server's IP address or name.

To determine from which server a given piece of content is to beretrieved, the location of the content within the hash key space isidentified. The content is then assigned to the next server in aparticular direction (e.g., clockwise or counter-clockwise) about thecircle. As a result, a given server provides all content located betweenitself and the previous server on the circle opposite the direction oftravel used in the consistent hash. The foregoing process of assigningcontent to a server be expressed as:

serverID=hash(contentkey)% N

where N is the total number of servers for the CDN, hash ( ) is ahashing function, contentkey is a key associated with the content (whichmay be but is not limited to the content itself) and serverID is anumerical identifier ranging from 0 to N assigned to a server of theCDN. In response to a server being added or removed from the CDN (e.g.,a change in the value of N in the above formula), the serverID for eachpiece of content may be recalculated and the content may beredistributed or reassigned within the CDN according to the new mapping.Accordingly, if a server becomes unavailable (for example, because theserver is disconnected, fails, or is removed from the CND) then thepoints it maps to will be removed and remapped to other servers.Similarly, adding a new server between two servers would take on atleast a portion of the points mapped to the next server.

As noted, each piece of available content from the CDN 102 for an areamay be associated with a particular serverID corresponding to the serveron which the content is stored. Such information may be stored, forexample, as part of the CDN content data 212 accessible by therendezvous system 202. In other implementations, other data from whichthe server may be identified may be stored and accessible by therendezvous system 202 such that the rendezvous system may dynamicallyidentify the particular server from which content may be retrieved. Therendezvous system 202 may then calculate a serverID based on the numberof servers identified in the CDN data 212 for the particular location ofthe client device 104.

In implementations of the present disclosure, identification of aparticular server from which to obtain content may be deterministic. Inother words, requests for the same content and including locationidentifiers that are resolved to the same server 204 always result inthe requesting device being directed to the same server 204. In thismanner, content may be cached at determined servers, based on therequested content, to reduce unnecessary caching of content acrossmultiple servers within an area serviced by the CDN 102. This may openup caching space for other content to be cached, improving theefficiency of the caching scheme of the CDN 102.

In operation 412, the rendezvous system 202 may transmit the determinedserver ID to the requesting device from which the content request wasreceived. For example, the rendezvous system 202 may transmit the serverID to the CMS 124 or the client device 104. The server ID may be, insome instances, included in a domain name, such as“serverA.Denver.foo.com”. As described above, this domain name may beused by the client device 104 as a portion of a DNS request to the DNSarchitecture 154 to obtain an IP address or other network address forthe selected server 204 of the CDN 102 for providing the content.

In certain implementations of the present disclosure, the client device104 may receive multiple domain names and/or IP addresses in response toa content request. For example, in one implementation, the rendezvoussystem 202 may provide a first domain name corresponding to a primaryserver for retrieving requested content and one or more second domainnames corresponding to a backup server. In implementations in whichcontent is distributed via a consistent hashing scheme, for example, thebackup server may be the next server in the consistent hash. Multiple IPaddresses may also be provided to the client device 104 when resolving adomain name received from the rendezvous system 202. In such cases, theDNS architecture 154 may be configured to provide multiple IP addressesin response to receiving a domain name identifying a particular serverof a CDN 102.

FIG. 5 is a block diagram illustrating an example of a computing deviceor computer system 500 which may be used in implementing the embodimentsof the network disclosed above. In particular, the computing device ofFIG. 5 is one embodiment of the server or other networking componentthat performs one of more of the operations described above. Thecomputer system (system) includes one or more processors 502-506.Processors 502-506 may include one or more internal levels of cache (notshown) and a bus controller or bus interface unit to direct interactionwith the processor bus 512. Processor bus 512, also known as the hostbus or the front side bus, may be used to couple the processors 502-506with the system interface 514. System interface 514 may be connected tothe processor bus 512 to interface other components of the system 500with the processor bus 512. For example, system interface 514 mayinclude a memory controller 518 for interfacing a main memory 516 withthe processor bus 512. The main memory 516 typically includes one ormore memory cards and a control circuit (not shown). System interface514 may also include an input/output (I/O) interface 520 to interfaceone or more I/O bridges or I/O devices with the processor bus 512. Oneor more I/O controllers and/or I/O devices may be connected with the I/Obus 526, such as I/O controller 528 and I/O device 530, as illustrated.

I/O device 530 may also include an input device (not shown), such as analphanumeric input device, including alphanumeric and other keys forcommunicating information and/or command selections to the processors502-506. Another type of user input device includes cursor control, suchas a mouse, a trackball, or cursor direction keys for communicatingdirection information and command selections to the processors 502-506and for controlling cursor movement on the display device.

System 500 may include a dynamic storage device, referred to as mainmemory 516, or a random access memory (RAM) or other computer-readabledevices coupled to the processor bus 512 for storing information andinstructions to be executed by the processors 502-506. Main memory 516also may be used for storing temporary variables or other intermediateinformation during execution of instructions by the processors 502-506.System 500 may include a read only memory (ROM) and/or other staticstorage device coupled to the processor bus 512 for storing staticinformation and instructions for the processors 502-506. The system setforth in FIG. 5 is but one possible example of a computer system thatmay employ or be configured in accordance with aspects of the presentdisclosure.

According to one embodiment, the above techniques may be performed bycomputer system 500 in response to processor 504 executing one or moresequences of one or more instructions contained in main memory 516.These instructions may be read into main memory 516 from anothermachine-readable medium, such as a storage device. Execution of thesequences of instructions contained in main memory 516 may causeprocessors 502-506 to perform the process steps described herein. Inalternative embodiments, circuitry may be used in place of or incombination with the software instructions. Thus, embodiments of thepresent disclosure may include both hardware and software components.

A machine readable medium includes any mechanism for storing ortransmitting information in a form (e.g., software, processingapplication) readable by a machine (e.g., a computer). Such media maytake the form of, but is not limited to, non-volatile media and volatilemedia. Non-volatile media includes optical or magnetic disks. Volatilemedia includes dynamic memory, such as main memory 516. Common forms ofmachine-readable medium may include, but is not limited to, magneticstorage medium (e.g., floppy diskette); optical storage medium (e.g.,CD-ROM); magneto-optical storage medium; read only memory (ROM); randomaccess memory (RAM); erasable programmable memory (e.g., EPROM andEEPROM); flash memory; or other types of medium suitable for storingelectronic instructions.

Embodiments of the present disclosure include various steps, which aredescribed in this specification. The steps may be performed by hardwarecomponents or may be embodied in machine-executable instructions, whichmay be used to cause a general-purpose or special-purpose processorprogrammed with the instructions to perform the steps. Alternatively,the steps may be performed by a combination of hardware, software and/orfirmware.

Various modifications and additions can be made to the exemplaryembodiments discussed without departing from the scope of the presentinvention. For example, while the embodiments described above refer toparticular features, the scope of this invention also includesembodiments having different combinations of features and embodimentsthat do not include all of the described features. Accordingly, thescope of the present invention is intended to embrace all suchalternatives, modifications, and variations together with allequivalents thereof.

We claim:
 1. A method of processing content requests comprising:receiving, at a networking device, a request for content comprising eachof a content identifier associated with a content file and a locationidentifier associated with a geographic location of a content-receivingdevice; generating, by the network device and based on the contentidentifier, a server identifier corresponding to a content server of aplurality of content servers of a CDN in the geographic location; andtransmitting, to a requesting device, a domain name comprising a serveridentifier corresponding to the content server of the plurality ofcontent servers, an indication of the geographic location of thecontent-receiving device, and a shared domain identifier, wherein adomain name system (DNS) utilizes the domain name to obtain anidentification of the content server of the plurality of content serversfrom a database associated with the shared domain identifier.
 2. Themethod of claim 1 further comprising: executing a hashing function withthe content identifier as an input variable, wherein the output of thehashing function corresponds to the server identifier of the contentserver.
 3. The method of claim 1 wherein each of the plurality ofservers is geographically proximate to the geographic location indicatedby the location identifier.
 4. The method of claim 1 wherein the serveridentifier and the indication of the geographic location are encodedprior to transmission of the domain name to the DNS.
 5. The method ofclaim 1 wherein the database comprises a plurality of entries, each ofthe plurality of entries comprising a domain name associated with theshared domain identifier and a corresponding content server identifier.6. The method of claim 1 wherein the identification of the contentserver comprises an Internet Protocol (IP) address at which the contentserver receives communications via a network.
 7. The method of claim 1wherein the request for content is received from a client computingdevice and transmitting the domain name comprises transmitting thedomain name to the client computing device.
 8. A networking devicecomprising: one or more processors; and a non-transitory storage deviceconfigured to store one or more programs, wherein the one or moreprograms, when executed by the one or more processors, cause the one ormore processors to: communicate with a requesting device to receive arequest for content comprising each of a content identifier associatedwith a content file and a location identifier associated with ageographic location of a content-receiving device; generate, based onthe content identifier, a server identifier corresponding to a contentserver of a plurality of content servers of a CDN in the geographiclocation; and transmit, to the requesting device, a domain namecomprising a server identifier corresponding to the content server ofthe plurality of content servers, an indication of the geographiclocation of the content-receiving device, and a shared domainidentifier, wherein a domain name system (DNS) utilizes the domain nameto obtain an identification of the content server of the plurality ofcontent servers from a database associated with the shared domainidentifier.
 9. The networking device of claim 8 wherein the requestingdevice is a content management system (CMS) and transmitting the domainname comprises transmitting the domain name to the CMS.
 10. Thenetworking device of claim 9 wherein the location identifier is insertedinto the request for content by the CMS upon receiving a request fromthe content-receiving device.
 11. The networking device of claim 8wherein the requesting device is the content-receiving device.
 12. Thenetworking device of claim 8 wherein generating the server identifiercomprises executing a hashing function with the content identifier as aninput variable, wherein the output of the hashing function correspondsto the server identifier of the content server.
 13. The networkingdevice of claim 12 wherein the output of the hashing function indicatesa location on a hashing circle, wherein each location on the ringcorresponds to a value in a hash key space defined by the range ofoutcomes of the hashing function and each value corresponds to one ofthe plurality of content servers.
 14. The networking device of claim 12wherein the one or more programs further cause the one or moreprocessors to: transmit a retrieval instruction to the content server ofa plurality of content servers of a CDN to retrieve and store therequested content.
 15. The networking device of claim 8 wherein the oneor more programs further cause the one or more processors to: encode aportion of the domain name prior to transmission of the domain name tothe DNS.